package gdk

class Person {
    String name
    int age
    def show(name){println "this man is $name"}
    def run(age){println "he is $age" }
    static void main(String[] args) {
        //指定参数名可以不写构造器
        def person = new Person(name:"侯征", age:25)
        //间接访问属性 []
        def properties = person.properties
        //通过一个动态属性列表,使用 obj[key]动态访问属性
        properties.each {
            println "${person[it.key]}"
        }
        println properties
        //接受到string方法名,使用invokeMethod间接访问方法,Groovy中所有对象都支持,不需要反射
        person.invokeMethod("show","姚振")
        person.invokeMethod("run",23)
        //可在运行时动态调用方法

    }
}
